import axios from 'axios';
import qs from 'qs';
import {getToken} from '~plugins/auth';

let options = {
    // headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    // baseURL: `http://${process.env.HOST || '127.0.0.1'}:${process.env.PORT || 3000}`,
    baseURL: `http://${process.env.HOST || '127.0.0.1'}:${process.env.PORT || 3000}`,
    transformRequest: [function (data) {
        // 这里可以在发送请求之前对请求数据做处理，比如form-data格式化等，这里可以使用开头引入的Qs（这个模块在安装axios的时候就已经安装了，不需要另外安装）
        data = qs.stringify(data);
        return data;
    }]
    // withCredentials:true, // 允许跨域a
    // transformResponse: [function (data) {
    //     // 这里提前处理返回的数据
    //     return data;
    // }],
    // httpAgent: new http.Agent({keepAlive: true}),
    // httpsAgent: new https.Agent({keepAlive: true}),
    // proxy: {
    //     host: '192.168.1.113',
    //     port: 8080
    // },
};


axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// axios.defaults.headers.common['Authorization'] = 'Bearer '+ getToken();
// The server-side needs a full url to works
// if (process.SERVER_BUILD) {
//     // 设置base url 路径
//     options.baseURL = `http://${process.env.HOST || '192.168.1.110'}:${process.env.PORT || 3000}`;
// }
var instance = axios.create(options);

/**
 * req 拦截器
 */
instance.interceptors.request.use(
    config => {
        // 这里写死一个token，你需要在这里取到你设置好的token的值
        const token = getToken();
        console.log(token);
        if (token) {
            // 这里将token设置到headers中，header的key是Authorization，这个key值根据你的需要进行修改即可
            config.headers.Authorization = token;
        }
        return config
    },
    error => {
        return Promise.reject(error)
    });

/**
 * res拦截器
 */
instance.interceptors.response.use(function (response) {
    console.log(`axios response info: ${response.request['responseURL']}`);
    console.log(response.data);
    return response;
}, function (error) {
    console.error('axios error:');
    console.error(error.response);
    return Promise.reject(error);
});
export default instance;
